﻿using System;
using System.Data;
using System.Configuration;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using Anthem;
using BusinessRules;
using Common;
using DataAccess;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using System.Collections.Generic;

public partial class RecursosIVAConceptos : PageBase
{
    public string StrIpiId
    {
        get
        {
            if (ViewState["StrIpiId"] != null)
                return ViewState["StrIpiId"].ToString();
            return "";
        }
        set { ViewState["StrIpiId"] = value; }
    }


    #region strIraId

    public string strIraId
    {
        get { return (ViewState["strIraId"] == null ? string.Empty : ViewState["strIraId"].ToString()); }
        set { ViewState["strIraId"] = value; }
    }

    #endregion
   
    protected void Page_Load(object sender, EventArgs e)
    {
        traerContextItems();
        lblMensaje.Visible = false;
        if (Manager.IsCallBack)
        {
            Manager.RegisterClientScriptBlock(typeof(Page), "reloj", "<script>muestraReloj2();</script>");
        }
        WccAcciones1.Permisos = Permisos;
        if (!IsPostBack)
        {

            if (StrIpiId != "")
            {

                txtIdentificador.Text = StrIpiId;
              //  cargarCampos();
               // WccAcciones1.Accion = Utilidad.Acciones.Actualizar;
                WccAcciones1.AddVisible = false;
                WccAcciones1.UpdateVisible = false;
                WccAcciones1.DeleteVisible = false;
            }
            else
            {
                WccAcciones1.Accion = Utilidad.Acciones.Adicionar;
            }
        }

        WccAcciones1.AddVisible = false;
        WccAcciones1.UpdateVisible = false;
        WccAcciones1.DeleteVisible = false;
        WccAcciones1.DeclineVisible = false;
        WccAcciones1.PublishVisible = false;
    }


    #region - contextItems

    private void traerContextItems()
    {

        if (Context.Items["StrIpiId"] != null)
            StrIpiId = Convert.ToString(Context.Items["StrIpiId"]);
        if (Context.Items["strIraId"] != null)
            strIraId = Context.Items["strIraId"].ToString();
    
        

    }

    #endregion

    #region crearContextItems

    private void crearContextItems()
    {
        try
        {
            Context.Items["strIraId"] = strIraId;
            Context.Items["StrIpiId"] = StrIpiId;

        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.ToString();
        }
    }

    #endregion

    protected void btnRegresar_Click(object sender, ImageClickEventArgs e)
    {
        crearContextItems();
        Server.Transfer("RecursosIva.aspx?SSM_ID=26", true);
    }


    protected void gridImagenes_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
    {
        if (e.NewValues["SIP_NOMBRE"] == null)
        {
            AddError(e.Errors, gridImagenes.Columns["SIP_NOMBRE"],
                     "Debe subir el archivo");
        }
    }

    static void AddError(Dictionary<GridViewColumn, string> errors, GridViewColumn column, string errorText)
    {
        if (errors.ContainsKey(column)) return;
        errors[column] = errorText;
    }
  
    #region UploadBtn_Click

    protected void UploadBtn_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {

            if (FileUpload1.PostedFile != null)
                try
                {


                    string strNombreArchivo = DateTime.Now.ToString().Replace("/", "-").Replace(" ", "").Replace(":", ".") + "_" + FileUpload1.FileName;
                    string strLocation = Server.MapPath("DocumentosRecursosIva/DocumentosPlanInversion/");
                    FileUpload1.PostedFile.SaveAs(strLocation + strNombreArchivo);

                    GridViewDataColumn column = gridImagenes.Columns["SIP_NOMBRE"] as GridViewDataColumn;
                    if (column == null) return;
                    if (gridImagenes.IsEditing)
                    {


                        ASPxTextBox obj = (ASPxTextBox)gridImagenes.FindEditRowCellTemplateControl(column, "txtNombre");

                        if (obj != null)
                        {//borrar el archivo anterior

                            if (obj.Text != "")
                                DeleteFile(strLocation + obj.Text);

                            obj.Text = strNombreArchivo;
                            Label1.Text = strNombreArchivo;
                        }
                        //grid.CancelEdit();
                        //grid.StartEdit(prevIndex < 0 ? 0 : prevIndex);
                    }

                }
                catch (Exception ex)
                {

                    lblMensaje.Text = ex.ToString();
                }

        }

    }

    private static void DeleteFile(string strFileName)
    { //Delete file from the server
        if (strFileName.Trim().Length > 0)
        {
            FileInfo fi = new FileInfo(strFileName);
            if (fi.Exists) //if file exists delete it
            {
                fi.Delete();
            }
        }
    }

    protected void gridImagenes_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
    {

        try
        {
            if (e.Values[4].ToString() != "")
            {
                string strLocation = Server.MapPath("DocumentosRecursosIva/DocumentosPlanInversion/");
                DeleteFile(strLocation + e.Values[4]);
            }
        }

        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }

    }


    #endregion
    protected void WccAcciones1_Publish_OnClick(object sender, ImageClickEventArgs e)
    {
        
    }
    protected void btnConceptoFaborable_Click(object sender, EventArgs e)
    {
        try
        {
            BusinessRules.RecursosIva objRecursosIva = new BusinessRules.RecursosIva(ConfigurationManager.AppSettings["Conn"]);
            BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
            AdmUsuariosData objAdmUsuariosData = objBR.ConsultarUsuarioCorreoRecursosIva(StrIpiId);
            objRecursosIva.ActualizarEstadoRecursosIva(StrIpiId, "F");
            //objRecursosIva.AgregarEjecucionPlanesYProgramas(StrIpiId);
            objRecursosIva.AgregarHistoricoPlanInversion(StrIpiId, Usuario.UsuId.ToString(), "Se envio el Concepto al Departamento", "F");
            IvaPlanInversionData objIvaPlanInversionData = objRecursosIva.ConsultarPlanInversionIpiId(StrIpiId);
            string strNombreProyecto = "";
            string strDepartamento = "";
            string strMunicipio = "";
            string strArchivo = "";
            if (objIvaPlanInversionData != null)
            {
                DataRow objRow = objIvaPlanInversionData.Rows[0];
                if (objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD] != null && objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD].ToString() != "")
                {
                    strNombreProyecto = objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD].ToString();
                    strDepartamento = objRow[IvaPlanInversionData.ZON_NOMBRE_FIELD].ToString();
                    strMunicipio = objRow[IvaPlanInversionData.MUNICIPIO_FIELD].ToString();
                }


                DataTable objDataTableArchivo = objRecursosIva.ConsultarConceptosArchivosIpiId(StrIpiId);
                if (objDataTableArchivo.Rows.Count > 0)
                {
                    strArchivo = objDataTableArchivo.Rows[0]["SIP_NOMBRE"].ToString();
                }

            }

            if (objAdmUsuariosData.Rows.Count > 0)
            {
                objBR.correoEnvioConceptoProyectoRecursosIva(objAdmUsuariosData.Rows[0][AdmUsuariosData.USU_CORREO_ELECTRONICO_FIELD].ToString(), strNombreProyecto, strDepartamento, strMunicipio, strArchivo, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
                
                string strAdministradores = ConfigurationManager.AppSettings["correoAdministadorRecursosIva"].ToString();
                string[] strArregloAdministradores = strAdministradores.Split(',');
                foreach (string var in strArregloAdministradores)
                {
                    objBR.correoEnvioConceptoProyectoRecursosIva(var, strNombreProyecto, strDepartamento, strMunicipio, strArchivo, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
                }
            }


            lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
            lblMensaje.CssClass = "mensaje";
            lblMensaje.Visible = true;
            
        }
        catch (Exception ex)
        {
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
            lblMensaje.Text = ex.Message;
        }
    }
    protected void btnConceptoDesfaborable_Click(object sender, EventArgs e)
    {
        try
        {
            BusinessRules.RecursosIva objRecursosIva = new BusinessRules.RecursosIva(ConfigurationManager.AppSettings["Conn"]);
            BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
            AdmUsuariosData objAdmUsuariosData = objBR.ConsultarUsuarioCorreoRecursosIva(StrIpiId);
            objRecursosIva.ActualizarEstadoRecursosIva(StrIpiId, "S");
            objRecursosIva.AgregarHistoricoPlanInversion(StrIpiId, Usuario.UsuId.ToString(), "Se envio el Concepto al Departamento", "S");
            IvaPlanInversionData objIvaPlanInversionData = objRecursosIva.ConsultarPlanInversionIpiId(StrIpiId);
            string strNombreProyecto = "";
            string strDepartamento = "";
            string strMunicipio = "";
            string strArchivo = "";
            if (objIvaPlanInversionData != null)
            {
                DataRow objRow = objIvaPlanInversionData.Rows[0];
                if (objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD] != null && objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD].ToString() != "")
                {
                    strNombreProyecto = objRow[IvaPlanInversionData.IPI_NOMBRE_PROYECTO_FIELD].ToString();
                    strDepartamento = objRow[IvaPlanInversionData.ZON_NOMBRE_FIELD].ToString();
                    strMunicipio = objRow[IvaPlanInversionData.MUNICIPIO_FIELD].ToString();
                }


                DataTable objDataTableArchivo = objRecursosIva.ConsultarConceptosArchivosIpiId(StrIpiId);
                if (objDataTableArchivo.Rows.Count > 0)
                {
                    strArchivo = objDataTableArchivo.Rows[0]["SIP_NOMBRE"].ToString();
                }

            }

            if (objAdmUsuariosData.Rows.Count > 0)
            {
                objBR.correoEnvioConceptoProyectoRecursosIvaDesfaborable(objAdmUsuariosData.Rows[0][AdmUsuariosData.USU_CORREO_ELECTRONICO_FIELD].ToString(), strNombreProyecto, strDepartamento, strMunicipio, strArchivo, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);

                string strAdministradores = ConfigurationManager.AppSettings["correoAdministadorRecursosIva"].ToString();
                string[] strArregloAdministradores = strAdministradores.Split(',');
                foreach (string var in strArregloAdministradores)
                {
                    objBR.correoEnvioConceptoProyectoRecursosIvaDesfaborable(var, strNombreProyecto, strDepartamento, strMunicipio, strArchivo, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
                }

            }


            lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
            lblMensaje.CssClass = "mensaje";
            lblMensaje.Visible = true;
        }
        catch (Exception ex)
        {
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
            lblMensaje.Text = ex.Message;
        }
    }
    protected void btnEnviarPlanesProgramas_Click(object sender, EventArgs e)
    {

        BusinessRules.RecursosIva objRecursosIva = new BusinessRules.RecursosIva(ConfigurationManager.AppSettings["Conn"]);

      try
      {
          //Verificar si el estado del proyecto es favorable de o contrario no enviar nada Y AVISARLE AL USUARIO
          IvaPlanInversionData objIvaPlanInversionData = objRecursosIva.ConsultarPlanInversionIpiId(StrIpiId);

          foreach (DataRow objRow in objIvaPlanInversionData.Rows)
          {
              if(objRow[IvaPlanInversionData.IPI_ESTADO_FIELD].ToString() == "L")
              {
                  objRecursosIva.AgregarEjecucionPlanesYProgramas(StrIpiId);
                  lblMensaje.Text = "La información fue enviada exitosamente al módulo de Planes y Programas";
                  lblMensaje.CssClass = "mensaje";
                  lblMensaje.Visible = true;
              }
              else
              {
                  lblMensaje.Text = "Este Proyecto no se encuentra Liquiado  por tanto no se puede enviar al módulo de Planes y Programas";
                  lblMensaje.CssClass = "error";
                  lblMensaje.Visible = true;
              }

          }

         
      }
        

        catch (Exception ex)
        {
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
            lblMensaje.Text = ex.Message;
        }
        ////Consulta si existe en planes y programas  si es asi saca un mensaje aclarando que el proyecto se  encuentra en planes y programas
        //string strScript = @"<script language=""javascript""> alert('Este proyecto ya se encuentra resgistrado en el modulo de planes y programas');</script>";
        //Anthem.Manager.RegisterPageScriptBlock("AvisoExisteProyectoPP", strScript);
    }
    protected void gridImagenes_RowInserted(object sender, DevExpress.Web.Data.ASPxDataInsertedEventArgs e)
    {
        try
        {
 
           // AGREGAR EL HISTORICO DE LOS CAMBIOS DE ESTADO



            BusinessRules.RecursosIva objRecursosIva = new BusinessRules.RecursosIva(ConfigurationManager.AppSettings["Conn"]);

            //Actualizar  el estado del registro
            objRecursosIva.ActualizarEstadoRecursosIva(StrIpiId, e.NewValues["IES_ID"].ToString());
            objRecursosIva.AgregarHistoricoPlanInversion(StrIpiId, Usuario.UsuId.ToString(), e.NewValues["SIP_DESCRIPCION"].ToString(), e.NewValues["IES_ID"].ToString());

            
        }
        catch (Exception objEx)
        {
            string algo = objEx.Message.ToString();
            lblMensaje.Text = algo;
        }
    }
    protected void gridImagenes_RowUpdated(object sender, DevExpress.Web.Data.ASPxDataUpdatedEventArgs e)
    {
        try
        {

            // AGREGAR EL HISTORICO DE LOS CAMBIOS DE ESTADO



            BusinessRules.RecursosIva objRecursosIva = new BusinessRules.RecursosIva(ConfigurationManager.AppSettings["Conn"]);

            //Actualizar  el estado del registro
            objRecursosIva.ActualizarEstadoRecursosIva(StrIpiId, e.NewValues["IES_ID"].ToString());
            objRecursosIva.AgregarHistoricoPlanInversion(StrIpiId, Usuario.UsuId.ToString(), e.NewValues["SIP_DESCRIPCION"].ToString(), e.NewValues["IES_ID"].ToString());


        }
        catch (Exception objEx)
        {
            string algo = objEx.Message.ToString();
            lblMensaje.Text = algo;
        }
    }
}
